#include "serialselectwidget.h"

QSerialSelectWidget::QSerialSelectWidget(QDialog *parent) : QDialog(parent)
{
    this->resize(600,200);
    this->setWindowTitle("选择串口");

    InitUI();

    QStringList scomlist = getEnableCommPort();

    for(QString sItem:scomlist)
    {
        _pComBox->addItem(sItem);
    }

    connect(_pOkBtn,&QPushButton::clicked,this,&QSerialSelectWidget::onOk);
    connect(_pCancelBtn,&QPushButton::clicked,this,&QSerialSelectWidget::onCancel);

}
/******************************************
* 功能:
* 输入:
* 输出:
* 返回值:
* 维护记录:
******************************************/
void QSerialSelectWidget::InitUI()
{
    _pComBox = new QComboBox(this);
    _pOkBtn = new QPushButton("确定");
    _pCancelBtn = new QPushButton("取消");


    _pComBox->setMinimumHeight(30);

    QGridLayout* playout = new QGridLayout(this);
    for(int i = 0; i < 10; i++)
    {
        playout->setColumnStretch(i,1);
    }

    playout->addWidget(new QLabel("选择串口号"),0,2,1,1);
    playout->addWidget(_pComBox,0,3,1,4);

    playout->addWidget(_pOkBtn,1,3,1,1);
    playout->addWidget(_pCancelBtn,1,5,1,1);

}
/******************************************
* 功能:
* 输入:
* 输出:
* 返回值:
* 维护记录:
******************************************/
void QSerialSelectWidget::onOk()
{
    m_sSelectComName = _pComBox->currentText();
    this->accept();
}

/******************************************
* 功能:
* 输入:
* 输出:
* 返回值:
* 维护记录:
******************************************/
void QSerialSelectWidget::onCancel()
{
    this->reject();
}

// 获取计算机可用串口
QStringList QSerialSelectWidget::getEnableCommPort()
{
    QStringList CommPortList;

    const auto serialPortInfos = QSerialPortInfo::availablePorts();

    for (const QSerialPortInfo &serialPortInfo : serialPortInfos)
    {
        CommPortList.append(serialPortInfo.portName());
    }

    return CommPortList;
}

